package com.banesco.comunes.entidades;

import java.util.Date;

import net.rim.device.api.i18n.ResourceBundle;
import net.rim.device.api.util.Persistable;

import com.banesco.comunes.utilidades.ExtensionFramework;
import com.banesco.precargadepositos.interfaz.recursos.EstadosPreCargaResource;


/** Clase que posee los atributos de un deposito
 * @author maguca
 *
 */
public class PreDeposito implements Persistable, IPreCarga, EstadosPreCargaResource {


	public static ResourceBundle _estadosPreCarga= ResourceBundle.getBundle(EstadosPreCargaResource.BUNDLE_NAME);
	
	/**
	 * Constructor de la clase
	 */
	public PreDeposito(){

		_cedulaDepositante = "";
		_cedulaBeneficiario = "";
		_montoCheque = 0;
		_montoEfectivo = 0;
		_numeroDeCheques = 0;
		_numeroCuenta = "";
		_numeroLibreta = "";
		_numeroReferencia = "";
		_numeroTicket = "";
//		_numeroTicket = ExtensionFramework.GenerarNumeroAleatorio() + ""; // Se utiliza para las pruebas cuando el WS esta caido
		_estado = _estadosPreCarga.getString(Cargado);
		_fechaEmision = ExtensionFramework.FechaToStringFormato(new Date());
	}


	/** Numero de ticket que se genera*/
	private String _numeroTicket;


	/** Numero de cuenta*/
	private String _numeroCuenta;


	/**
	 * Numero de referencia del deposito
	 */
	private String _numeroReferencia;


	/**
	 * Monto del efectivo
	 */
	private float _montoEfectivo;


	/**
	 * Monto del cheque
	 */
	private float _montoCheque;


	/**
	 * Cedula del depositante
	 */
	private String _cedulaDepositante;


	/**
	 * Cedula del beneficiario
	 */
	private String _cedulaBeneficiario;


	/**
	 * Numero de libreta
	 */
	private String _numeroLibreta;


	/**
	 * Fecha de emision del deposito
	 */
	private String _fechaEmision;
	
	
	/**
	 * Estado del predeposito
	 */
	private String _estado;

	
	/**
	 * Cantidad de cheques en el deposito
	 */
	private int _numeroDeCheques;

	/**
	 * Metodo que asigna un valor al numero de ticket
	 * @return monto
	 */
	public void setNumeroTicket(String numeroTicket) {
		_numeroTicket = numeroTicket;
	}



	/**
	 * Metodo que obtiene el numero de Ticket
	 * @param monto
	 */
	public String getNumeroTicket() {
		return _numeroTicket;
	}


	//region
	/**
	 * Metodo que asigna un valor a la cuenta de debito del objeto
	 * @return cuenta de debito
	 */
	public void setNumeroCuenta(String numeroCuenta) {
		_numeroCuenta = numeroCuenta;
	}


	/**
	 * Metodo que obtiene el numero de cuenta del deposito del objeto
	 * @param monto
	 */
	public String getNumeroCuenta() {
		return _numeroCuenta;
	}


	/**
	 * Metodo que asigna un valor al numero de referencia del objeto
	 * @return numero de referencia
	 */
	public void setNumeroReferencia(String numeroReferencia) {
		_numeroReferencia = numeroReferencia;
	}


	/**
	 * Metodo que obtiene el numero de referencia del objeto
	 */
	public String getNumeroReferencia() {
		return _numeroReferencia;
	}


	/**
	 * Metodo que obtiene el numero enmascarado de la cuenta
	 * @return numero enmascarado
	 */
	public String getNumeroCuentaClienteEnmascarada(){
		return "***"+ _numeroCuenta.substring(_numeroCuenta.length() - 7);
	}


	/**
	 * Metodo que obtiene el numero enmascarado de la cuenta
	 * @return numero enmascarado
	 */
	public String getCedulaBeneficiarioEnmascarada(){
		return "*****"+ _cedulaBeneficiario.substring(_cedulaBeneficiario.length() - 3);
	}
	
	
	/**
	 * Metodo que obtiene el numero enmascarado de la cuenta
	 * @return numero enmascarado
	 */
	public String getCedulaBeneficiarioConGuion(){
		return  _cedulaBeneficiario.substring(0,1) + "-" + _cedulaBeneficiario.substring(1);
	}
	
	
	/**
	 * Metodo que obtiene el numero enmascarado de la cuenta
	 * @return numero enmascarado
	 */
	public String getCedulaDepositanteioConGuion(){
		return  _cedulaDepositante.substring(0,1) + "-" + _cedulaDepositante.substring(1);
	}
	
	
	/**
	 * Metodo que obtiene el numero enmascarado de la cuenta con la letra y separada con un guion del numero
	 * @return numero enmascarado
	 */
	public String getCedulaBeneficiarioEnmascaradaConGuion(){
		
		return  _cedulaBeneficiario.substring(0,1) + "-*****" + _cedulaBeneficiario.substring(_cedulaBeneficiario.length() - 3);
	}


	/**
	 * Metodo que asigna un valor al monto de efectivo del objeto
	 * @return cuenta de debito
	 */
	public void setMontoEfectivo(float montoEfectivo) {
		this._montoEfectivo = montoEfectivo;
	}


	/**
	 * Metodo que obtiene el monto de efectivo del objeto
	 * @param montoEfectivo
	 */
	public float getMontoEfectivo() {
		return _montoEfectivo;
	}
	
	
	/**
	 * Metodo que obtiene el monto de efectivo del objeto en String y con 
	 * una coma como el separador de decimales 
	 * @param montoEfectivo
	 */
	public String getMontoEfectivoString() {
		String respuesta = "";
		
		respuesta = _montoEfectivo +"";
		respuesta = respuesta.replace('.', ',');
		
		return respuesta;
	}


	/**
	 * Metodo que asigna un valor al monto de cheque del objeto
	 * @return cuenta de debito
	 */
	public void setMontoCheque(float montoCheque) {
		this._montoCheque = montoCheque;
	}


	/**
	 * Metodo que obtiene el monto de cheque del objeto
	 * @param montoEfectivo
	 */
	public float getMontoCheque() {
		return _montoCheque;
	}
	
	
	/**
	 * Metodo que obtiene el monto de efectivo del objeto en String y con 
	 * una coma como el separador de decimales 
	 * @param montoEfectivo
	 */
	public String getMontoChequeString() {
		String respuesta = "";
		
		respuesta = _montoCheque +"";
		respuesta = respuesta.replace('.', ',');
		
		return respuesta;
	}


	/**
	 * Metodo que asigna un valor a la cedula del objeto
	 * @return cuenta de debito
	 */
	public void setCedulaDepositante(String cedulaDepositante) {
		this._cedulaDepositante = cedulaDepositante;
	}


	/**
	 * Metodo que obtiene la cedula del depositante del objeto
	 * @param montoEfectivo
	 */
	public String getCedulaDepositante() {
		return _cedulaDepositante;
	}


	/**
	 * Metodo que asigna un valor a la cedula del beneficiario
	 * @return cuenta de debito
	 */
	public void setCedulaBeneficiario(String cedulaBeneficiario) {
		this._cedulaBeneficiario = cedulaBeneficiario;
	}


	/**
	 * Metodo que obtiene la cedula del beneficiario
	 * @param montoEfectivo
	 */
	public String getCedulaBeneficiario() {
		return _cedulaBeneficiario;
	}


	/**
	 * Metodo que asigna un valor al numero de libreta del objeto
	 * @return cuenta de debito
	 */
	public void setNumeroLibreta(String numeroLibreta) {
		this._numeroLibreta = numeroLibreta;
	}


	/**
	 * Metodo que obtiene el numero de libreta del objeto
	 * @param montoEfectivo
	 */
	public String getNumeroLibreta() {
		return _numeroLibreta;
	}


	/**
	 * Metodo que obtiene la fecha de emision del ticket
	 * @return
	 */
	public String getFechaEmision() {
		return _fechaEmision;
	}


	/**
	 * Metodo que asigna la fecha de emision del ticket
	 * @param _fechaEmision
	 */
	public void setFechaEmision(String _fechaEmision) {
		this._fechaEmision = _fechaEmision;
	}


	/**
	 * Sobreescribe el metodo para ver una representacion legible de la entidad
	 */
	public String toString()
	{
		return "CedulaDepositante: "+ _cedulaDepositante +
				" CedulaBeneficiario: "+ _cedulaBeneficiario +
				" Cuenta: "+ _numeroCuenta +
				" MontoCheque: "+ _montoCheque +
				" MontoEfectivo: "+ _montoEfectivo +
				" NumeroLibreta: "+ _numeroLibreta +
				" NumeroReferencia: "+ _numeroReferencia +
				" NumeroTicket: "+ _numeroTicket +
				" Estado: "+ _estado;		
	}



	public String getEstado() {
		return _estado;
	}



	public void setEstado(String _estado) {
		this._estado = _estado;
	}



	public int getNumeroDeCheques() {
		return _numeroDeCheques;
	}



	public void setNumeroDeCheques(int _numeroDeCheques) {
		this._numeroDeCheques = _numeroDeCheques;
	}
}